Apache Mina

NOTE

Apache Mina 필터 체인 구조 및 주요 Filter 정리.

🖥️ 참고

📌 개념

Filter 종류

FilterclassDescription
BlacklistBlacklistFilterBlocks connections from blacklisted remote addresses
Buffered WriteBufferedWriteFilterBuffers outgoing requests like the BufferedOutputStream does
CompressionCompressionFilter
ConnectionThrottleConnectionThrottleFilter
ErrorGeneratingErrorGeneratingFilter
ExecutorExecutorFilter
FileRegionWriteFileRegionWriteFilter
KeepAliveKeepAliveFilter
LoggingLoggingFilterLogs event messages, like MessageReceived, MessageSent, SessionOpened, …
MDC InjectionMdcInjectionFilterInject key IoSession properties into the MDC
NoopNoopFilterA filter that does nothing. Useful for tests.
ProfilerProfilerTimerFilterProfile event messages, like MessageReceived, MessageSent, SessionOpened, …
ProtocolCodecProtocolCodecFilterA filter in charge of encoding and decoding messages
ProxyProxyFilter
Reference countingReferenceCountingFilterKeeps track of the number of usages of this filter
SessionAttributeInitializingSessionAttributeInitializingFilter
StreamWriteStreamWriteFilter
SslFilterSslFilter
WriteRequestWriteRequestFilter
  • LoggingFilter: 모든 이벤트와 요청을 기록
  • ProtocolCodecFilter: 들어오는 ByteBuffer 메시지를 POJO로 변환하고, 그 반대의 경우도 마찬가지
  • CompressionFilter: 모든 데이터를 압축
  • SSLFilter: SSL - TLS - StartTls 지원을 추가
// filterChain에 넣는방법
NioSocketAccpetor acceptor = new NioSocketAcceptor();
 
//getFilterChain()을 이용하여, ProtocolCodecFilter 추가
acceptor.getFilterChain().addLast("codec", new protocolCodecFilter());